home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 1 / Gold Medal Software Volume 1 (Gold Medal) (1994).iso / demos / ll_land.arj / LL_SIN.INC < prev   
Text File  |  1993-05-11  |  8KB  |  164 lines

  1. ;; ****************************************************************
  2. ;; *                                                              *
  3. ;; * SIN.ASM : Sin OBJ File for quick index lookup of trig fnctns *
  4. ;; *                   Copyright (C) 1992 by Primor               *
  5. ;; *                                                              *
  6. ;; ****************************************************************
  7. .code
  8. ;;
  9. ;; PROCEDURE: ll_sin()
  10. ;; PURPOSE  : Allow for fast table indexing of SIN Values.
  11. ;; PASS     : Integer value between +/-360.
  12. ;; RETURNS  : (char)sin(degree angle)
  13. ;;
  14. ll_sin  proc
  15.         push    bp                      ; Save the BP Value
  16.         mov     bp,sp                   ; Set up BP for argument passing
  17.         push    ds                      ; Save the Data Segment
  18.  
  19.         mov     ax,@data                ; Set Data Segment to our Data
  20.         mov     ds,ax                   ; :
  21.  
  22.         mov     bx,[bp+MM]              ; Get the SIN index
  23.         and     bx,0000000111111111b    ; : and place it within (0 to 1023)
  24. @@:     cmp     bx,360                  ; :
  25.         jl      lls_1                   ; :
  26.         sub     bx,360                  ; :
  27.     jmp     @B                      ; :
  28. lls_1:  xor     ah,ah                   ; Set the return value to the
  29.         add     bx,offset SIN           ; : SIN value stored in our table
  30.         mov     al,[bx]                 ; : for requested data.
  31.  
  32.         pop     ds                      ; Restore Data Segment
  33.         pop     bp                      ; Restore Base Pointer
  34.         ret                             ; Return to caller
  35. ll_sin  endp
  36.  
  37. ;;
  38. ;; PROCEDURE: ll_cos()
  39. ;; PURPOSE  : Allow for fast table indexing of COS Values.
  40. ;; PASS     : Integer value between +/-32767.
  41. ;; RETURNS  : (uchar)(cos((passed_integer*6.2831853)/1024)*0x7f)+128
  42. ;;
  43. ll_cos  proc
  44.         push    bp                      ; Save the BP Value
  45.         mov     bp,sp                   ; Set up BP for argument passing
  46.         push    ds                      ; Save the Data Segment
  47.  
  48.         mov     ax,@data                ; Set Data Segment to our Data
  49.         mov     ds,ax                   ; :
  50.  
  51.         mov     bx,[bp+MM]              ; Get the COS index
  52.         and     bx,0000000111111111b    ; : and place it within (0 to 360)
  53. @@:     cmp     bx,360                  ; :
  54.         jl      llc_1                   ; :
  55.         sub     bx,360                  ; :
  56.     jmp     @B                      ; :
  57. llc_1:  xor     ah,ah                   ; Set the return value to the
  58.         add     bx,offset COS           ; : COS value stored in our table
  59.         mov     al,[bx]                 ; : for requested data.
  60.  
  61.         pop     ds                      ; Restore Data Segment
  62.         pop     bp                      ; Restore Base Pointer
  63.         ret                             ; Return to caller
  64. ll_cos  endp
  65.  
  66. .data
  67. ;;
  68. ;; SIN Data : Values range from -128 to +127 360  intervals.
  69. ;;
  70.        SIN     db    0,   2,   4,   6,   8,  11,  13,  17
  71.                db   17,  19,  22,  24,  26,  28,  30,  35
  72.                db   35,  37,  39,  41,  43,  45,  47,  51
  73.                db   51,  53,  55,  57,  59,  61,  63,  67
  74.                db   67,  69,  71,  72,  74,  76,  78,  81
  75.                db   81,  83,  84,  86,  88,  89,  91,  94
  76.                db   94,  95,  97,  98, 100, 101, 102, 105
  77.                db  105, 106, 107, 108, 109, 111, 112, 114
  78.                db  114, 115, 116, 116, 117, 118, 119, 120
  79.                db  120, 121, 122, 122, 123, 123, 124, 125
  80.                db  125, 125, 125, 126, 126, 126, 126, 126
  81.                db  126, 126, 127, 126, 126, 126, 126, 126
  82.                db  126, 126, 125, 125, 125, 124, 124, 123
  83.                db  123, 122, 122, 121, 120, 120, 119, 117
  84.                db  117, 116, 116, 115, 114, 113, 112, 109
  85.                db  109, 108, 107, 106, 105, 104, 102, 100
  86.                db  100,  98,  97,  95,  94,  92,  91,  88
  87.                db   88,  86,  84,  83,  81,  79,  78,  74
  88.                db   74,  72,  71,  69,  67,  65,  63,  59
  89.                db   59,  57,  55,  53,  51,  49,  47,  43
  90.                db   43,  41,  39,  37,  35,  32,  30,  26
  91.                db   26,  24,  22,  19,  17,  15,  13,   8
  92.                db    8,   6,   4,   2,   0,  -2,  -4,  -8
  93.                db   -8, -11, -13, -15, -17, -19, -22, -26
  94.                db  -26, -28, -30, -32, -35, -37, -39, -43
  95.                db  -43, -45, -47, -49, -51, -53, -55, -59
  96.                db  -59, -61, -63, -65, -67, -69, -71, -74
  97.                db  -74, -76, -78, -79, -81, -83, -84, -88
  98.                db  -88, -89, -91, -92, -94, -95, -97,-100
  99.                db -100,-101,-102,-104,-105,-106,-107,-109
  100.                db -109,-111,-112,-113,-114,-115,-116,-117
  101.                db -117,-118,-119,-120,-120,-121,-122,-123
  102.                db -123,-123,-124,-124,-125,-125,-125,-126
  103.                db -126,-126,-126,-126,-126,-126,-127,-126
  104.                db -126,-126,-126,-126,-126,-126,-125,-125
  105.                db -125,-124,-124,-123,-123,-122,-122,-120
  106.                db -120,-120,-119,-118,-117,-116,-116,-114
  107.                db -114,-113,-112,-111,-109,-108,-107,-105
  108.                db -105,-104,-102,-101,-100, -98, -97, -94
  109.                db  -94, -92, -91, -89, -88, -86, -84, -81
  110.                db  -81, -79, -78, -76, -74, -72, -71, -67
  111.                db  -67, -65, -63, -61, -59, -57, -55, -51
  112.                db  -51, -49, -47, -45, -43, -41, -39, -35
  113.                db  -35, -32, -30, -28, -26, -24, -22, -17
  114.                db  -17, -15, -13, -11,  -8,  -6,  -4,   0
  115.                
  116. ;;
  117. ;; COS Data : Values range from -128 to +127 with 360 intervals.
  118. ;;
  119.        COS     db  127, 126, 126, 126, 126, 126, 126, 125
  120.                db  125, 125, 125, 124, 124, 123, 123, 122
  121.                db  122, 121, 120, 120, 119, 118, 117, 116
  122.                db  116, 115, 114, 113, 112, 111, 109, 107
  123.                db  107, 106, 105, 104, 102, 101, 100,  97
  124.                db   97,  95,  94,  92,  91,  89,  88,  84
  125.                db   84,  83,  81,  79,  78,  76,  74,  71
  126.                db   71,  69,  67,  65,  63,  61,  59,  55
  127.                db   55,  53,  51,  49,  47,  45,  43,  39
  128.                db   39,  37,  35,  32,  30,  28,  26,  22
  129.                db   22,  19,  17,  15,  13,  11,   8,   4
  130.                db    4,   2,   0,  -2,  -4,  -6,  -8, -13
  131.                db  -13, -15, -17, -19, -22, -24, -26, -30
  132.                db  -30, -32, -35, -37, -39, -41, -43, -47
  133.                db  -47, -49, -51, -53, -55, -57, -59, -63
  134.                db  -63, -65, -67, -69, -71, -72, -74, -78
  135.                db  -78, -79, -81, -83, -84, -86, -88, -91
  136.                db  -91, -92, -94, -95, -97, -98,-100,-102
  137.                db -102,-104,-105,-106,-107,-108,-109,-112
  138.                db -112,-113,-114,-115,-116,-116,-117,-119
  139.                db -119,-120,-120,-121,-122,-122,-123,-124
  140.                db -124,-124,-125,-125,-125,-126,-126,-126
  141.                db -126,-126,-126,-126,-127,-126,-126,-126
  142.                db -126,-126,-126,-126,-125,-125,-125,-124
  143.                db -124,-123,-123,-122,-122,-121,-120,-119
  144.                db -119,-118,-117,-116,-116,-115,-114,-112
  145.                db -112,-111,-109,-108,-107,-106,-105,-102
  146.                db -102,-101,-100, -98, -97, -95, -94, -91
  147.                db  -91, -89, -88, -86, -84, -83, -81, -78
  148.                db  -78, -76, -74, -72, -71, -69, -67, -63
  149.                db  -63, -61, -59, -57, -55, -53, -51, -47
  150.                db  -47, -45, -43, -41, -39, -37, -35, -30
  151.                db  -30, -28, -26, -24, -22, -19, -17, -13
  152.                db  -13, -11,  -8,  -6,  -4,  -2,   0,   4
  153.                db    4,   6,   8,  11,  13,  15,  17,  22
  154.                db   22,  24,  26,  28,  30,  32,  35,  39
  155.                db   39,  41,  43,  45,  47,  49,  51,  55
  156.                db   55,  57,  59,  61,  63,  65,  67,  71
  157.                db   71,  72,  74,  76,  78,  79,  81,  84
  158.                db   84,  86,  88,  89,  91,  92,  94,  97
  159.                db   97,  98, 100, 101, 102, 104, 105, 107
  160.                db  107, 108, 109, 111, 112, 113, 114, 116
  161.                db  116, 116, 117, 118, 119, 120, 120, 122
  162.                db  122, 122, 123, 123, 124, 124, 125, 125
  163.                db  125, 126, 126, 126, 126, 126, 126, 127
  164.